home *** CD-ROM | disk | FTP | other *** search
/ Maclife 42 / MACLIFE42.ISO.7z / MACLIFE42.ISO / FreeWare200 / 圧縮伸張⁄コード / MacGzip / MacGzip 1.1.2 Source.sea / MacGzip 1.1.2 Source / Mac / MacIO.h < prev    next >
Text File  |  1997-04-01  |  4KB  |  193 lines

  1. /*
  2.  * MacIO.h
  3.  * (c) SPDsoft, August 20, 1995
  4.  */
  5.  
  6.  
  7. #ifndef __FILES__
  8. #include <Files.h>
  9. #endif
  10.  
  11. #ifndef _MACBINARY_H_
  12. #include "MacBinary.h"
  13. #endif
  14.  
  15. #ifndef EFAULT
  16. #define    EFAULT        ioErr
  17. #endif
  18. #ifndef EBADF
  19. #define    EBADF        ioErr
  20. #endif
  21. #ifndef ENFILE
  22. #define    ENFILE        tmfoErr
  23. #endif
  24.  
  25.  
  26. /*
  27.  * file table (iov)
  28.  */
  29.  
  30. #define MIO_MAX_FILES    2        /* enough for macgzip */
  31. #define MIO_BUFSIZE        4096    /* > sizeof(MBIIHeader) */
  32.  
  33. #define MIO_ASCII        0
  34. #define MIO_BINARY        1
  35. #define MIO_MACBIN        2
  36.  
  37. #define OM_RDONLY        0
  38. #define OM_WRONLY        0x0001
  39. #define OM_RDWR            0x0002
  40.  
  41. #define OM_TEXT            0x0040
  42. #define OM_BINARY        0x0080
  43. #define OM_MACBINARY    0x0100
  44.  
  45.  
  46. typedef struct
  47. {
  48.     int                    omode;
  49.     int                    fsomode;                /* save the original open mode (mb->plain) */
  50.     int                    mode;
  51.     short                dref,
  52.                         rref;
  53.     char                buffer[MIO_BUFSIZE];
  54.     long                pos;                    /* Bytes w/r. Updated after filling buffer */
  55.     long                len;
  56.     int                    blen;                    /* Lenght of buffer ('dirty') */
  57.     char                *bstart;                /* pointer to next free pos in buffer */
  58.     long                rdlen,                    /* rounded start.dlen (to 128) (w) */
  59.                         rrlen;                    /* rounded start.rlen (to 128) (w) */
  60.     int                    deof,
  61.                         reof;
  62.     int                    new;                    /* set if a new file was created for fs */
  63.     MBIIStartHeader        start;
  64.     MBIIHeader            header;
  65.     FSSpec                fs;
  66. } fildes;
  67.  
  68.  
  69. extern fildes    fd_table[MIO_MAX_FILES]; /* for low level access */
  70. extern int        fd_busy[MIO_MAX_FILES];
  71. extern OSType    DefCreator;
  72. extern OSType    DefType;
  73.  
  74. int fs_open( FSSpec *fs, int mode, ...);
  75. int fs_close(int fd);
  76. int fs_unlink(FSSpec *fs);
  77. int fs_read(int fd, char *buf, unsigned int n);
  78. int fs_write(int fd, char *buf, unsigned int n);
  79.  
  80.  
  81. /* from stat.h & sys/types, 01a,01nov94,ejo  written.*/
  82. /* this is a little dirty, but this is not a POSIX lib... */
  83.  
  84.  
  85. #include <time.h>
  86. /*
  87.  * Uncomment for CW < 11
  88.  */
  89. /*
  90. #if defined (__MWERKS__) && !defined (_YVALS)
  91. #include <yvals.h>
  92. #endif
  93. */
  94. typedef short            dev_t;
  95. typedef long            ino_t;
  96. typedef unsigned long    mode_t;
  97. typedef int             nlink_t;
  98. typedef long            off_t;
  99.  
  100. /*
  101.  * Uncomment for CW < 11
  102.  */
  103. /*
  104. #ifdef __MWERKS__
  105. #ifndef _SIZET
  106. #define _SIZET
  107. typedef _Sizet            size_t;
  108. #endif
  109. #elif defined (THINK_C)
  110. #include <size_t.h>
  111. #else
  112. #ifndef __size_t__
  113. #define __size_t__
  114. typedef unsigned int    size_t;
  115. #endif
  116. #endif
  117. */
  118. /*
  119.  * else for CW >= 11
  120.  */
  121. #if defined (__MWERKS__) || defined (THINK_C)
  122. #include <size_t.h>
  123. #else
  124. #ifndef __size_t__
  125. #define __size_t__
  126. typedef unsigned int    size_t;
  127. #endif
  128. #endif
  129.  
  130.  
  131. typedef unsigned int    ssize_t;
  132. typedef int                uid_t;
  133. typedef int                gid_t;
  134. typedef int                pid_t;
  135.  
  136.  
  137. #define S_IFMT        0170000    /* type of file */
  138. #define S_IFIFO        0010000    /* fifo */
  139. #define S_IFDIR        0040000    /* directory */
  140. #define S_IFCHR        0020000    /* character special */
  141. #define S_IFBLK        0060000    /* block special */
  142. #define S_IFREG        0100000    /* regular */
  143.  
  144. #define S_ISFIFO(m)    (((m) & S_IFMT) == S_IFIFO)
  145. #define S_ISCHR(m)    (((m) & S_IFMT) == S_IFCHR)
  146. #define S_ISDIR(m)    (((m) & S_IFMT) == S_IFDIR)
  147. #define S_ISBLK(m)    (((m) & S_IFMT) == S_IFBLK)
  148. #define S_ISREG(m)    (((m) & S_IFMT) == S_IFREG)
  149.  
  150. #define S_ISUID        0004000
  151. #define S_ISGID        0002000
  152.  
  153. #define S_IRUSR        00400
  154. #define S_IWUSR        00200
  155. #define S_IXUSR        00100
  156. #define S_IRWXU        (S_IRUSR | S_IWUSR | S_IXUSR)
  157.  
  158. #define S_IRGRP        00040
  159. #define S_IWGRP        00020
  160. #define S_IXGRP        00010
  161. #define S_IRWXG        (S_IRGRP | S_IWGRP | S_IXGRP)
  162.  
  163. #define S_IROTH        00004
  164. #define S_IWOTH        00002
  165. #define S_IXOTH        00001
  166. #define S_IRWXO        (S_IROTH | S_IWOTH | S_IXOTH)
  167.  
  168. /* historical file modes */
  169. #define    S_IREAD        00400
  170. #define    S_IWRITE    00200
  171. #define    S_IEXEC        00100
  172.  
  173. struct stat
  174.     {
  175.     mode_t    st_mode;
  176.     ino_t    st_ino;
  177.     dev_t    st_dev;
  178.     nlink_t    st_nlink;    
  179.     uid_t    st_uid;
  180.     gid_t    st_gid;
  181.     off_t    st_size;
  182.     time_t    st_atime;
  183.     time_t    st_mtime;
  184.     time_t    st_ctime;
  185. /* Extra fields for MacOS */
  186.     off_t   st_dsize;        /* Data Fork size rounded up to 128 */
  187.     off_t   st_rsize;        /* Res Fork size rounded up to 128 */
  188.     off_t   st_mbsize;        /* 128 bytes for MacBinary Header + DF & RF both rounded up to 128 */
  189.     };
  190.  
  191.  
  192. int fs_stat(FSSpec *fs, struct stat *buf);
  193.